package com.lc.service;

import com.cnpc.framework.base.entity.BaseResponse;
import com.cnpc.framework.base.entity.Dict;
import com.cnpc.framework.base.pojo.Result;
import com.cnpc.framework.base.service.BaseService;
import com.lc.entity.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface AppService extends BaseService {

    public BaseResponse saveChildren(String parentId, String type, List<String> names) throws Exception;
    List<Dict> getDictsByCode(String code) throws Exception;

    public BaseResponse checkAppUserMobile(String mobile) throws Exception;
    public BaseResponse addOrUpdateAppUser240925(String mobile,String deptName) throws Exception;
    public BaseResponse addOrUpdateAppUser240929(String mobile,String deptId) throws Exception;
    public BaseResponse checkAppUserMobile240925(String mobile,String deptName) throws Exception;
    public BaseResponse generateCode(String mobile,String type) throws Exception;
    public BaseResponse loginByCode(String mobile, String code) throws Exception;
    public BaseResponse loginByPwd(String loginName, String password) throws Exception;

    public BaseResponse login(String mobile, String code, String password, String token) throws Exception;
    public BaseResponse getImageCode() throws Exception;
    public BaseResponse checkImageCode(String uuid,String code) throws Exception;

    public BaseResponse checkToken(String token) throws Exception;
    public BaseResponse checkEmpToken(String token) throws Exception;

    public BaseResponse checkTokenAndRoleCodes(String token) throws Exception;

    public BaseResponse checkCode(String mobile, String code) throws Exception;

    public BaseResponse addNotice(Notice notice, MultipartFile pic, MultipartFile video, HttpServletRequest request) throws Exception;

    public BaseResponse getNotice(Integer id) throws Exception;

    public BaseResponse deleteNotice(Integer id) throws Exception;

    public BaseResponse getNoticeList(String type, String status, String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    public BaseResponse addNews(News news, MultipartFile pic, MultipartFile video, HttpServletRequest request) throws Exception;

    public BaseResponse getNews(Integer id) throws Exception;

    public BaseResponse deleteNews(Integer id) throws Exception;

    public BaseResponse getNewsList(String type, String show, String status, String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    public BaseResponse getArea(String code) throws Exception;

    public BaseResponse getAreaTree() throws Exception;



    public BaseResponse editAppNote(AppNote note) throws Exception;

    public BaseResponse getAppNote(String id) throws Exception;

    public BaseResponse deleteAppNote(String id) throws Exception;

    public BaseResponse getAppNoteList(String userId, String deptId, String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    public List<Map<String, Object>> getAppNoteDataList(String userId, String deptId, String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    public BaseResponse getAppNoteCalender(String userId, String deptId, String month) throws Exception;




    BaseResponse editHelp(AppHelp help)throws Exception;

    BaseResponse getHelpList(String type, String keyword, String status, String startTime, String endTime, Integer pageNum, Integer pageSize)throws Exception;

    BaseResponse getHelp(String id)throws Exception;



    public BaseResponse getItemChangeRecordList(String empId,String type,String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    public List<Map<String, Object>> getItemChangeRecords(String empId,String type,String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    public BaseResponse getItemChangeRecordListByAuth(String userId,String type,String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    public List<Map<String, Object>> getItemChangeRecordsByAuth(String userId,List<String> userDataScope,String type,String keyword, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;


    BaseResponse getItemChangeRecord(String id)throws Exception;

    BaseResponse deleteItemChangeRecord(String id)throws Exception;
    BaseResponse deleteItemChangeRecords(List<String> ids)throws Exception;


    public BaseResponse editUserFile(UserFile userFile) throws Exception;
    public BaseResponse getUserFile(String id) throws Exception;
    public BaseResponse deleteUserFile(String id) throws Exception;
    BaseResponse getUserFileList(String keyword, String userId, String type, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;
    public List<Map<String, Object>> getUserFileDataList(String keyword,String userId,String type,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;


    public BaseResponse addTagChangeRecord(TagChangeRecord tagChangeRecord) throws Exception;
    public BaseResponse getTagChangeRecord(String id) throws Exception;
    public BaseResponse deleteTagChangeRecord(String id) throws Exception;
    public BaseResponse deleteTagChangeRecords(List<String> ids) throws Exception;
    BaseResponse getTagChangeRecordList(String userId,String deptId, String changeType,String type,String itemId,String keyword,String state,String shUserId, String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;
    public List<Map<String, Object>> getTagChangeRecordDataList(String userId,String deptId,String changeType, String type,String itemId,String keyword, String state,String shUserId,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;
    public BaseResponse updateTagChangeRecordState(String userId,String id,int state,String reason) throws Exception;

    BaseResponse getTagChangeDAList(String year,String month) throws Exception;


    public BaseResponse resetUserPwd(List<String> userIds) throws Exception;


    public BaseResponse addAnswerTemp() throws Exception;
    public BaseResponse updateAnswerTempUserInfo() throws Exception;
    public BaseResponse getWjList240925(String userId) throws Exception;
    public BaseResponse getWjList(String userId) throws Exception;
    public BaseResponse saveWj240925(AppWjResult wjResult) throws Exception;
    public BaseResponse saveWj(AppWjResult wjResult) throws Exception;

    BaseResponse getWjResultList(String userId,String wjCode, Integer pointMin, Integer pointMax, String deptId, String type, String state,String keyword,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;
    public List<Map<String, Object>> getWjResultDataList(String userId,String wjCode, Integer pointMin, Integer pointMax, String deptId, String type, String state,String keyword,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    BaseResponse getWjResultItemList(String mainId,String userId,String wjCode, Integer pointMin, Integer pointMax, String deptId, String type, String state,String keyword,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;
    public List<Map<String, Object>> getWjResultItemDataList(String mainId,String userId,String wjCode, Integer pointMin, Integer pointMax, String deptId, String type, String state,String keyword,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;

    BaseResponse getAppUserList(String deptId,String type,String keyword,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;
    public List<Map<String, Object>> getAppUserDataList(String deptId,String type,String keyword,String startTime, String endTime, Integer pageNum, Integer pageSize) throws Exception;


    public BaseResponse getWjResult(String id) throws Exception;
    public BaseResponse getWjResult240925(String id) throws Exception;

    /*每个单位总体情况*/
    public BaseResponse getWjResultDA1(String wjCode,String startTime,String endTime) throws Exception;
    public void exportWjResultDA1(String token,String wjCode,String startTime,String endTime,HttpServletResponse response) ;

    /*分项数据，按单位分解*/
    public BaseResponse getWjResultDA2(String wjCode,String startTime,String endTime) throws Exception;
    public BaseResponse getWjResultDAAll2(String wjCode,String startTime,String endTime) throws Exception;

    public void exportWjResultDA2(String token,String wjCode,String startTime,String endTime,HttpServletResponse response) ;
    public void exportWjResultDAAll2(String token,String wjCode,String startTime,String endTime,HttpServletResponse response) ;

    /*意见建议收集*/
    public BaseResponse getWjResultDA3(String wjCode,String startTime,String endTime) throws Exception;
    public BaseResponse getWjResultFinalTags(String wjCode,String startTime,String endTime) throws Exception;

    public BaseResponse getWjResultFinalTags241012(String wjCode, String startTime, String endTime,String sortType) throws Exception;

    public void exportWjResultDA3(String token,String wjCode,String startTime,String endTime,HttpServletResponse response) ;


    public BaseResponse getWjResultDAByOptionForAll(String wjCode,String startTime,String endTime) throws Exception;
    public void exportWjResultDAByOptionForAll(String token, String wjCode, String startTime, String endTime, HttpServletResponse response);
    public BaseResponse getWjResultDAByOptionAndDept(String wjCode,String startTime,String endTime) throws Exception;
    public void exportWjResultDAByOptionAndDept(String token, String wjCode, String startTime, String endTime, HttpServletResponse response);

    public BaseResponse getWjUserDAByDept(String wjCode, String startTime, String endTime) throws Exception;

    public void exportWjResultDAInOne(String token, String wjCode, String startTime, String endTime, HttpServletRequest request, HttpServletResponse response);

}
